package com.jrx.anytxn.param.service.product;

import com.jrx.anytxn.i18n.response.TxnPage;
import com.jrx.anytxn.common.exception.TxnBizException;
import com.jrx.anytxn.param.dto.product.PrGuaranteeTableReq;
import com.jrx.anytxn.param.dto.product.PrGuaranteeTableRes;
import com.jrx.anytxn.param.entity.PrGuaranteeTable;

import java.util.List;

/**
 * 代偿回购参数接口
 */
public interface IPrGuaranteeTableService {

    /**
     * 根据租户编号，代偿参数编号 查询
     * @param tenantId
     * @param guaranteeId
     * @return PrGuaranteeTableRes
     * @throws TxnBizException
     */
    PrGuaranteeTableRes findByTenIdAndGuaranteeId(String tenantId, String guaranteeId) throws TxnBizException;

    /**
     * 根据租户ID分页查询信息
     *
     * @param pageNum  页码
     * @param pageSize 页大小
     * @param tenantId 租户ID
     * @return TxnPage<PrGuaranteeTableRes>
     * @throws TxnBizException
     */
    TxnPage<PrGuaranteeTableRes> findAllPageByTenId(Integer pageNum, Integer pageSize, String tenantId) throws TxnBizException;

    /**
     * 新增代偿会后参数表信息
     *
     * @param prGuaranteeTableReq 代偿回购参数请求参数
     * @return com.jrx.anytxn.param.dto.product.PrGuaranteeTableRes
     */
    PrGuaranteeTableRes addPrGuaranteeTable(PrGuaranteeTableReq prGuaranteeTableReq) throws TxnBizException;

    /**
     * 根据租户ID和代偿回购参数表ID编辑信息
     *
     * @param prGuaranteeTableReq 代偿回购参数请求参数
     * @return com.jrx.anytxn.param.dto.product.PrGuaranteeTableRes
     */
    PrGuaranteeTableRes modifyGuaranteeTable(PrGuaranteeTableReq prGuaranteeTableReq) throws TxnBizException;

    /**
     * 根据租户ID和代偿回购参数表ID删除信息
     *
     * @param tenantId 租户ID
     * @param guaranteeId   代偿回购参数表ID
     */
    Boolean removeByTenIdAndGuaranteeId(String tenantId, String guaranteeId) throws TxnBizException;

    /**
     * 根据租户查询代偿回购参数列表
     * @param tenantId
     * @return
     */
    List<PrGuaranteeTableRes> findAllGuaranteeByTenId(String tenantId);

    /**
     * 根据租户编号，代偿参数编号 查询
     * api接口使用 页面不可使用
     *
     * @param tenantId
     * @param guaranteeId
     * @return PrGuaranteeTableRes
     * @throws TxnBizException
     */
    PrGuaranteeTable findByGuaranteeId(String tenantId, String guaranteeId) throws TxnBizException;

}
